/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package session.stateless;

import util.enumeration.Country;
import exception.ExistException;
import java.util.Date;
import java.util.List;
import javax.ejb.Local;
import util.entityhelper.StaffAccountState;
import util.enumeration.AccessRight;
import util.enumeration.Department;
import util.enumeration.Gender;
import util.enumeration.JobPosition;

/**
 *
 * @author AdminNUS
 */
@Local
public interface StaffAccountManagerLocal {
    // TODO: i am not sure if i should put update touristaccount and tourist all under touristaccount not... sigh
    // create and del makes sense must be together.. 
    public void createStaffAccount(String username, String lastName, String firstName, Gender gender, Date birthdate, Country country, String locale, String email, String emailSecondary, Department department, JobPosition jobPosition, Date joinDate, List<AccessRight> accessRights) throws ExistException;
    public void updateStaffAccount(Long staffAccountId, String password, List<AccessRight> accessRights) throws ExistException; // uses enum!
    public void updateStaff(Long staffId, Country country, String locale, String email, String emailSecondary, Department department, JobPosition jobPosition) throws ExistException;
    public void deleteStaffAccount(Long staffAccountId) throws ExistException; 
    public StaffAccountState getStaffAccountByID(Long staffAccountId) throws ExistException;
    public StaffAccountState getStaffAccountByUsername(String username) throws ExistException;
    public List<StaffAccountState> getTCubeAccountList();
    public void updateStatus(StaffAccountState user);
//    public HashSet<TouristAccountState> getTouristAccountsByID(String touristAccountId) throws ExistException;
//    public HashSet<TouristAccountState> getTouristAccountsByUsername(String username) throws ExistException;
    public void setSelectedLocale(String selectedLocale);
    public void remove();
}
